Tools to help prioritize above-the-fold CSS
    
    
      Prioritize above-the-fold content first.
    
    
      For best performance, PageSpeed Insights
      recommends
      inlining the critical (above-the-fold) CSS of your page directly into your
      HTML. This eliminates additional roundtrips and allows the browser to
      paint the above-fold experience to your user’s screen sooner. The main
      idea is:
    
    
      - 
        Determine the above-the-fold styles for a page and write them between
        
<style> tags in the head.
       
      - Load all other stylesheets in the footer, ideally asynchronously.
 
    
    
      The following is a list of tools to help generate, inline and report on
      critical-path CSS.
    
    Node modules
    
      - 
        Penthouse - by
        Jonas Ohlsson generates critical-path CSS
      
 
      - 
        Critical - by Addy
        Osmani generates & inlines critical-path CSS (uses Penthouse,
        Oust and inline-styles)
      
 
      - 
        CriticalCSS -
        by FilamentGroup finds & outputs critical CSS
      
 
    
    Server-side modules
    
      - 
        mod_pagespeed -
        Apache module for automatic PageSpeed optimization
      
 
      - 
        ngx_pagespeed -
        Nginx module for automatic PageSpeed optimization
      
 
    
    Grunt tasks
    
    CasperJS
    
    PhantomJS
    
      - 
        dr-css-inliner -
        PhantomJS script to inline above-the-fold CSS on a page.
      
 
    
    Inline sources (styles, scripts)
    
      - 
        inline-styles -
        by Max Ogden, replaces 
<link> tags with inline
        <style> tags + inlines CSS url() calls with data URIs
       
      - 
        gulp-inline-source
        - by Filip Malinowski, replaces 
<link> tags with
        inline <style> tags, and replaces
        <script src=""> tags with their inline content
       
      - 
        inline-critical
        - by Ben Zörb, inline critical path CSS and load existing stylesheets
        with 
loadCSS
       
      - 
        isomorphic-style-loader
        for Webpack - allows to extract critical CSS for any given page/screen
        in React apps and inline it into HTML during server-side rendering
        (SSR). See
        React Starter Kit
        as an example.
      
 
    
    Async load CSS
    
      Async loading should be used to fetch the rest of your site-wide styles
      after you’ve inlined your critical-path CSS.
    
    
      - 
        loadCSS - loads
        CSS asynchronously using JS.
        Research
        that led to this is also available.
      
 
      - 
        async & conditional loading
        - POC script for loading CSS files asynchronously and conditionally
        based on body tag classes
      
 
      - 
        asyncLoader - async
        script/stylesheet loader
      
 
      - 
        basket.js - async
        script/resource loader with support for localStorage caching. Can be
        extended
        to load stylesheets.
      
 
    
    
      Note: The Guardian currently also cache their global styles into
      localStorage for subsequent page loads. More info in this
      comment.
    
    
    
    Bookmarklets/Extensions
    
    
      Render-blocking issues detection
    
    
      - 
        PageSpeed Insights
        - Online tool that measures the performance of a page for mobile devices
        and desktop devices. It fetches the url twice, once with a mobile
        user-agent, and once with a desktop-user agent.
      
 
      - 
        PSI - Node module for
        PageSpeed Insights reporting as part of your build process. Use directly
        with Gulp or use
        grunt-pagespeed
        if a Grunt user. For local testing, a write-up using this task and
        ngrok
        is available.
      
 
      - 
        PageSpeed Insights DevTools extension
        - Chrome extension for running PageSpeed tests from inside the browser.
      
 
      - 
        PageSpeed Insights Checker for mobile extension
        - checks Mobile PageSpeed score for every page and gives you a handy
        preview.
      
 
    
    
    
      - 
        UnCSS removes unused CSS
        from pages, allowing you to reduce the global CSS you may need to load
        in for your site. Tasks are available for
        Grunt,
        Gulp and
        other
        build tools.